ASM-Wiki- 8-bit Multiplikation

← Zurück

Von pps an Dr. Irata, DrIrata

ab=c Das Ergebnis muss hier aber sicher weiterhin 8 bit groß sein! .local mul8 ;a enthält am Ende das Ergebnis -> hier noch zusätzlich ein "blindes" c eingefügt lda #0 beq enterLoop doAdd clc adc a loop asl a enterLoop ;direkter Sprung hierher bringt uns AKKU+ab (also jsr mul8.enterLoop) lsr b bcs doAdd bne loop sta a rts ;--- c ;so können wir später c abfragen a .he 00 b .he 00 .endl

Zuerst a und b füllen, dann mit jsr mul8 starten. Das Ergebnis steht dann in c.

Antworten

... super cool!

Folgende Fragen habe ich:

  1. Du definierst das als local - das kenne ich noch nicht so gut. Ich denke es in Richtung Objective - das sind dann Prozeduren, die du jederzeit aufrufen kanst. Ich mache das mit .proc / .endp - was ist der generelle Unterschied ud wie bindest du das ein?
  2. Kannst du da auch eine 16 Bit x 16 Bit Multiplakation machen?
  3. Hast du eine gute Routine für Division?
  4. Ich brauche noch eine richtig gute Routine für Quadratwurzel und .... jetzt kommt es: Wir brauchen eine richtig geile kurze "flluffige" Routine für c=Wurzel(a2+b2) - also Pythagoras. Eine Näherung habe ich, aber besser eine gute Berechnung (muss nicht in Fließkomma sein).
  5. Deine Codes ... ich schreibe rein von wem die dann kommen - bei dir als pps und /oder plus Vorname?

LG Peter

Antworten

... ich habe die Routine gerade getestet, irgendwie kommt er nicht aus der Schleife raus...

Antworten

Haloo Peter,

schön, dass es funktioniert. Das ganze stammt nicht direkt von mir, ich habe Code von der codebase64 angepasst. Hier der Link zum Original: https://codebase64.org/doku.php?id=base:8bit_multiplication_8bit_product Wollte ich gestern eigentlich schon dazuschreiben, aber irgendwie war es dann wieder weg... :roll:

Schreibe also am besten White Flame als Autor hin.

.local ist im Pronzip nicht wirklich so anders, als eine Prozedur. Ich nutze das mittlerweile immer innerhalb einer Prozedur, wie z.B. .proc main, wenn ich nicht mit den @ Labels arbeiten möchte. Dann kann man zum Beispiel immer wieder einen ly und lx nutzen für x & y Loops. liest sich dann einfacher.

Hier ist es sicherlich eher eine Prozedur.

In dem Programm, wo ich das rausgeschnippelt habe, hatte ich aber tatsächlich nur main als .proc und den gesamten Rest, der darin dann kam, als .local geschrieben.

Antworten